/*
*
* 版权所有 Copyleft(c) 2005
* 刘炯个人工作室 Sharp-Mark Personal Studio
*
* 允许自由使用，复制，修改，传播和贩卖此源程序及其文档，而不必支付任何费用。
* 以上的版权信息必须出现在每一份复制品中。同时这份版权信息和许可声明
* 也必须出现在支持文档中。刘炯个人工作室不对此软件适于那种具体
* 用途做出任何阐述。此代码只作为代码本身提供对其品质不做任何保证。
*
*/

#pragma once

class Pole
{
public:
	Pole();
	void PushOnePiece(int);
	int PopOnePiece();
	char Id;
	vector<int> Pieces;
};

class Hanoi
{
// 方法
public:
	Hanoi(int n);

	void Run();

// 私有字段
protected:
	Pole _poles[3];
	int _level;
	int _step;

// 私有方法
protected:
	void DrawHanoi();

	void MovePieces(Pole&, Pole&, Pole&, int);
	void MoveOnePiece(Pole&, Pole&);

	void DelayTime(int time);


private:
	Hanoi();
};